草庐IT

Rust 生命周期

全部标签

tcp - Rust TcpListener 不响应外部请求

我的主要功能是这样的:fnmain(){letlistener=TcpListener::bind("192.168.1.187:9527").unwrap();println!("Listeningforconnectionsonport{}",9527);forstreaminlistener.incoming(){matchstream{Ok(stream)=>{thread::spawn(move||{letreq_stream=&stream.try_clone().unwrap();letreq=request::new(req_stream);letres=respons

c - 没有keepalive的物理断开的tcp套接字的生命周期

在没有keep-alive选项的TCP连接上,如果我物理断开线路-所以没有FIN/ACK可能性,这个套接字是否会愉快地接受我所有的应用程序数据,将其放入发送缓冲区并尝试永远发送它?如果没有,它何时以及如何终止=哪些错误将返回到我发送小块数据的应用程序?我们谈论Linux和c。谢谢 最佳答案 如果套接字正在发送,(1)最终发送缓冲区将填满,因此下一个发送调用将阻塞,并且(2)最终TCP将由于未收到ACKS并重置连接而导致发送尝试超时,并将错误传递给下一个发送调用。 关于c-没有keepal

c++ - 如何在进程生命周期的最后执行网络 IO?

我正在用C++开发一个DLL,它需要使用write()通过(先前建立的)TCP/IP连接写入一些数据。称呼。准确地说,DLL应该在进程停止时通过网络发送一点“进程12345在2007-09-2715:30:42终止,i的值为131”消息。不幸的是,我所知道的检测进程正在结束的所有方法显然都太晚了,任何网络调用都无法成功。特别是,我尝试了以下方法和write()调用在每种情况下都返回-1:调用write()来自全局对象的析构函数。调用write()来自使用atexit()注册的回调函数.调用write()来自DllMain(如果reason参数是DLL_PROCESS_DETACH)。我

http - 使用 std 在 Rust 中发出 HTTP 请求

我正在尝试自学Rust。我知道rust-http,但我想构建自己的http客户端。我正在使用GNULinux64位的当前夜间构建。这是我当前的代码:usestd::io::net::ip::SocketAddr;usestd::io::net::tcp::TcpStream;usestd::io::net::addrinfo::get_host_addresses;usestd::io::net::ip::IpAddr;usestd::io::stdio::println;fnmain(){//HTTPendpointlethost=~"www.telize.com";letpath=

tcp - 创建一个监听端口的简单 Rust 守护进程

我一直在尝试用Rust制作一个简单的守护进程,它将使用tcp_stream监听端口并打印消息。但是,我遇到了两个问题:1)如果我的守护进程使用println!,它就会崩溃。如果我删除所有对println!的提及,守护进程就会工作。制作守护进程时,stdout/stdin是如何工作的?OnesourceIfoundontheRustmailinglist说“使用现代初始化系统,如systemd或launchctl,这工作得非常好,应用程序开发人员不必关心守护进程,日志记录也可以通过stdout简单地完成。”这是什么意思?2)当我在非守护进程模式下运行下面的代码时,curls不会立即返回(

http - Rust 中基于 SSH 的 TCP 隧道

我正在尝试用Rust编写一个小程序来基本上完成ssh-L5000:localhost:8080所做的事情:在localhost:5000之间建立隧道我的机器和远程机器上的localhost:8080,这样如果HTTP服务器在远程机器上的端口8080上运行,我可以通过localhost:5000在本地访问它>,绕过可能阻止外部访问8080的远程防火墙。我意识到ssh已经做到了这一点并且可靠,这是一个学习项目,而且如果我让它工作的话我可能会添加一些功能:)这是一个准系统(没有线程,没有错误处理)到目前为止我想出的版本(应该在Rust1.8上编译):externcratessh2;//see

sockets - Rust 持久化 TcpStream

我似乎在与std::io::TcpStream作斗争。我实际上是在尝试打开与另一个系统的TCP连接,但下面的代码完全模拟了这个问题。我有一个Tcp服务器,它在打开时简单地将“HelloWorld”写入TcpStream,然后循环以保持连接打开。fnmain(){letlistener=io::TcpListener::bind("127.0.0.1",8080);letmutacceptor=listener.listen();forstreaminacceptor.incoming(){matchstream{Err(_)=>{/*connectionfailed*/}Ok(stre

rust - 如果 BufReader 取得流的所有权,我如何在其上读取和写入行?

我想从TCPStream中读取一行,向其中写入另一行,然后重复。问题是BufReader::new取得了我的TCPStream变量的所有权:letstream=...;//TCPStreamletreader=BufReader::new(stream);//moveditsvalue//can'tusestreamhereanymore有什么简单的解决方案? 最佳答案 解决方案:使用引用。letmutstream=...;letreader=BufReader::new(&stream);letwriter=BufWriter::

TCP 连接生命周期

我期望客户端/服务器TCP连接在野外持续多长时间?我希望它保持永久连接,但事情发生了,所以客户端将不得不重新连接。在什么时候我说代码有问题而不是某些外部设备有问题? 最佳答案 我同意ZanLynx的观点。不能保证,但假设没有连接或带宽问题,您可以通过发送数据几乎无限期地保持连接。一般来说,我已经采用了应用程序级别的保持事件方法,尽管这通常是因为它在客户端规范中,所以我不得不这样做。但只需每隔一两分钟发送一些短数据,您就可以期待某种确认。是否将一次失败视为连接失败由您决定。通常这就是我过去所做的,尽管有一个案例我已经连续等待三个失败的

tcp - 用 Rust 编写的示例 TCP 服务器

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion我正在寻找Rust中的TCP服务器示例。'helloworld'或echo服务器都很棒。